package com.xyy.saas.payment.adpater.xydLoan.core.req;

import com.xyy.saas.payment.adpater.xydLoan.core.enums.XydNotifyRepaymentOptStatus;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author wangcheng7
 * 通知还款结果
 */
@Data
@Accessors(chain = true)
public class XydNotifyRepaymentResultsReq {

    /**
     * 还款期数
     */
    private String installmentNoList;

    /**
     * 通知类型
     * 0:还款；1：退货
     *
     * @see com.xyy.saas.payment.cores.enums.XydNotifyTypeEnum#getCode()
     */
    private Integer notifyType;

    /**
     * 逾期天数
     */
    private Integer overdueDay;

    /**
     * 借款是否结清
     * 整笔借据还清状态
     */
    private String paidOff;

    /**
     * 手续费
     */
    private String prefee;

    /**
     * 已还利息
     */
    private String repayInterest;

    /**
     * 已还本金
     */
    private String repayLoanAmount;

    /**
     * 已还罚息
     */
    private String repayPenalty;

    /**
     * 还款日期 时间戳
     */
    private Long repayTime;

    /**
     * 操作结果
     * 0:失败；1：成功
     *
     * @see XydNotifyRepaymentOptStatus#getCode()
     */
    private String optStatus;

    /**
     * 操作结果说明
     */
    private String message;

    /**
     * 三方平台请求序列号
     * 如：合作平台的退货流水号
     */
    private String sequenceNumber;

    /**
     * 贴息天数
     */
    private Integer subsidyDays;

    /**
     * 贴息金额
     */
    private String subsidyInterest;

    /**
     * 用户订单编号（B2B平台）
     */
    private String thirdOrderNo;

    /**
     * 合作方订单号
     */
    private String outerOrderNo;

    /**
     * 提款编号(小雨点订单号)
     */
    private String xydLoanNo;

    /**
     * 唯一还款流水号
     * 小雨点唯一还款流水号
     */
    private String serialNumber;

    /**
     * 还款类型
     * 1：按期还款
     * 2：提前全额结清
     * 3：部分提前还款
     * 4：全部退货（犹豫期内）
     * 5：单期代偿
     * 6：全额代偿
     * 7：全部回购
     * 8：部分回购
     * 9：日常还款
     * 10：部分退货（犹豫期内）
     * 11：全部退货（犹豫期外）
     * 12：部分退货（犹豫期外）
     * 17：委托担保费还款
     */
    private Integer repaymentType;

    public static XydNotifyRepaymentResultsReq mock() {
        XydNotifyRepaymentResultsReq xydAuthCreditReq = new XydNotifyRepaymentResultsReq();
        xydAuthCreditReq.setThirdOrderNo("YBM202502022222222222222");
        return xydAuthCreditReq;
    }

}
